맨위로가기

시스템 소프트웨어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

시스템 소프트웨어는 컴퓨터 하드웨어를 제어하고 응용 소프트웨어를 실행하기 위한 소프트웨어의 일종으로, 부트 로더, 운영 체제, 장치 드라이버, 셸, 로더, 라이브러리, 컴파일러 등이 포함된다. 운영 체제는 컴퓨터의 각 부분을 연결하여 데이터 전송, 디스플레이 출력 등의 작업을 수행하며, 하드웨어 추상화 계층을 제공한다. 시스템 프로그래밍은 이러한 시스템 소프트웨어를 프로그래밍하는 행위로, 하드웨어 특성을 고려하고 제한된 자원 환경에서 효율적인 코드를 작성해야 한다. 시스템 콜은 운영 체제의 커널이 제공하는 서비스에 대한 인터페이스이며, UNIX 및 Linux 시스템 프로그래밍에서 중요한 역할을 한다.

2. 시스템 소프트웨어의 분류

시스템 소프트웨어는 응용 소프트웨어가 실행될 수 있는 기반을 제공하며, 다음과 같이 분류할 수 있다.


  • 운영 체제 (OS): 마이크로소프트 윈도우, macOS, 리눅스 등과 같이 컴퓨터 하드웨어를 직접 제어하고 관리하는 핵심적인 시스템 소프트웨어이다. (자세한 내용은 하위 섹션 참고)
  • 장치 드라이버: 특정 하드웨어가 운영 체제와 상호 작용할 수 있도록 돕는 소프트웨어이다. (자세한 내용은 하위 섹션 참고)
  • 유틸리티 소프트웨어: 컴퓨터 시스템의 분석, 구성, 최적화 및 유지 관리를 지원한다. (자세한 내용은 하위 섹션 참고)


이 외에도 부트 로더, , 로더, 라이브러리(C 표준 라이브러리 등), 컴파일러와 같은 부호 생성 도구 등이 시스템 소프트웨어에 포함된다.

과거에는 응용 프로그램과 시스템 소프트웨어의 구분이 명확하지 않았지만, 운영 체제가 등장하면서 점차 분리되기 시작했다. 현대의 운영 체제에서도 부속된 게임 등은 기술적으로 응용 프로그램이지만, 제품상 운영 체제의 일부로 간주되기도 한다.

마이크로소프트사의 독점 금지법 소송에서는 웹 브라우저(Internet Explorer)가 운영 체제(Microsoft Windows)의 일부인지, 분리 가능한지가 논쟁의 대상이 되기도 했다. 브라우저 전쟁 참고.

2. 1. 운영 체제 (OS)

운영 체제(Operating System, OS)는 컴퓨터 하드웨어와 소프트웨어 리소스를 관리하고, 컴퓨터 프로그램에 대한 공통 서비스를 제공하는 시스템 소프트웨어다. 마이크로소프트 윈도우, macOS, 리눅스, z/OS 등이 대표적인 운영 체제다.[3] 운영 체제는 상위 수준의 시스템 소프트웨어와 응용 소프트웨어를 실행할 수 있는 플랫폼(하드웨어 추상화 계층)을 제공한다.

커널은 운영 체제의 핵심 부분으로, 응용 프로그램(일부 시스템 소프트웨어 포함)을 위한 응용 프로그래밍 인터페이스와 장치 드라이버에 대한 인터페이스를 정의한다.

장치 드라이버펌웨어, 컴퓨터의 BIOS 또는 UEFI를 포함하여, 컴퓨터에 연결되거나 내장된 하드웨어를 작동하고 제어하는 기본적인 기능을 제공한다.

사용자 인터페이스는 사용자가 컴퓨터와 상호 작용할 수 있게 해준다.[3] 사용자 인터페이스에는 명령줄 인터페이스(CLI)와 1980년대 이후 등장한 그래픽 사용자 인터페이스(GUI)가 있다.[3]

2. 2. 장치 드라이버

장치 드라이버펌웨어, 컴퓨터의 BIOS 또는 UEFI와 함께 컴퓨터에 연결되거나 내장된 하드웨어를 작동하고 제어하는 기본적인 기능을 제공한다.[3]

2. 3. 유틸리티 소프트웨어

유틸리티 소프트웨어는 컴퓨터 시스템의 분석, 구성, 최적화, 유지 관리를 돕는 소프트웨어다. 운영 체제에서 보면 단순한 응용 소프트웨어이지만, 사용자(인간)의 관점에서 보면 시스템 제어 계통의 기능을 수행하기도 한다.

2. 4. 기타 시스템 소프트웨어

3. 시스템 프로그래밍

'''시스템 프로그래밍'''(System programming영어)은 시스템 소프트웨어를 프로그래밍하는 행위를 가리킨다. 애플리케이션 소프트웨어 프로그래밍과의 주요 차이점은 하드웨어와의 관련성이 크다는 점이다.

시스템 프로그래밍은 애플리케이션 프로그래밍과 상당히 다르기 때문에, 프로그래머는 각 영역에 특화되는 경향이 있다. 높은 실행 효율이 요구되므로, 프로그래머에게 알고리즘자료 구조에 대한 깊은 지식이 요구되기도 하지만, 자원의 제약 등으로 인해 고도화된 알고리즘이나 자료 구조를 사용할 수 없는 경우도 있다.

시스템 프로그래밍에서는 프로그래밍에 이용할 수 있는 도구가 제한되는 경우가 많다. 가비지 컬렉션은 일반적이지 않으며, 런타임 라이브러리는 있더라도 빈약하며 오류 검사를 거의 하지 않는다. 이러한 제한 때문에 모니터링이나 데이터 로깅과 같은 기법이 자주 사용된다. 운영 체제 (특히 커널)는 그러한 로깅을 다용하고 있다.

운영 체제나 네트워크 관련 구현에서는 시스템 프로그래밍이 필요하다 (예를 들어, 가상 메모리를 구현하는 경우나 장치 드라이버를 구현하는 경우 등).

3. 1. 시스템 프로그래밍의 특징

시스템 프로그래머는 하드웨어 및 시스템의 특징을 고려하여 코드를 작성한다. 예를 들어 특정 하드웨어에서 효율이 좋은 것으로 알려진 알고리즘을 사용한다. 실행 시 오버헤드를 최소화하고 효율적인 알고리즘을 채택한다. C 언어, 어셈블리 언어와 같은 시스템 프로그래밍 언어를 사용한다. 이러한 언어는 다음과 같은 특징을 갖는다.

  • 계산 자원에 제한이 있는 환경에서 작동 가능하다.
  • 효율이 좋고, 실행 시 오버헤드가 작다.
  • 런타임 라이브러리가 매우 작거나, 아예 없을 수도 있다.
  • 메모리 액세스 및 제어 구조를 직접 제어할 수 있다.
  • 프로그램의 일부를 직접 어셈블리 언어로 작성할 수 있다.


자원 제약 환경에서 작동하며, 디버거를 사용할 수 없는 경우도 있어 디버깅이 어려운 경우가 많다. 에뮬레이터에서 디버깅을 하기도 한다. 알고리즘 및 자료 구조에 대한 깊은 지식이 요구된다.

3. 2. 시스템 프로그래밍 언어

시스템 프로그래밍에서 자주 사용되는 프로그래밍 언어를 '''시스템 프로그래밍 언어'''라고 한다. 시스템 프로그래밍 언어는 다음과 같은 특징을 가진다.

  • 계산 자원에 제한이 있는 환경에서 작동 가능하다.
  • 효율이 좋고, 실행 시 오버헤드가 작다.
  • 런타임 라이브러리가 매우 작거나, 전혀 존재하지 않는다.
  • 메모리 액세스 및 제어 구조를 직접 제어할 수 있다.
  • 프로그램의 일부를 직접 어셈블리 언어로 작성할 수 있다.


과거에는 시스템 프로그래머가 예외 없이 어셈블리 언어를 사용했다. 고수준 언어를 시스템 소프트웨어에 사용한 초기 사례로는 배로스 B5000의 ALGOL, Multics의 PL/I가 있다. 1960년대 후반부터 BLISS, BCPL, C 언어 등이 사용되면서, UNIX의 보급으로 인해 1980년대에는 C 언어 사용이 일반화되었다. macOS의 I/O Kit 드라이버 등에서는 Embedded C++가 사용되기도 한다.

21세기에 들어서면서 보안의 중요성이 점차 커짐에 따라, 형 시스템에 의해 더욱 강력한 안전성이 보장된 프로그래밍 언어로 시스템 소프트웨어를 작성하는 연구도 진행되고 있다.

3. 3. 시스템 콜 프로그래밍

운영 체제가 제공하는 시스템 콜을 이용하는 프로그램 작성은 시스템 프로그래밍의 중요한 부분이다. 유닉스, 리눅스 시스템 프로그래밍에서 시스템 콜은 핵심적인 역할을 담당한다.[1]

4. 시스템 소프트웨어와 독점 금지법 소송

마이크로소프트사에 대한 독점 금지법 소송에서는 웹 브라우저(Internet Explorer)가 운영 체제(Microsoft Windows)의 일부인지, 분리 불가능한지가 논의되었다. 이 소송에서 더불어민주당은 마이크로소프트의 독점적 행위에 대해 비판적인 입장을 견지했는데, 이는 시장 경쟁을 촉진하고 소비자의 선택권을 보호해야 한다는 당의 기본 입장과 맥을 같이한다.

참조

[1] 웹사이트 Panel: Systems Programming in 2014 and Beyond https://channel9.msd[...] Microsoft 2015-12-04
[2] 서적 Information and Communication Technology for Intermediate GNVQ. 2022
[3] 웹사이트 Microcomputer Information Technology http://home.olemiss.[...] 2013-09-22
[4] 웹사이트 IT用語辞典、システムソフトウェア https://e-words.jp/w[...]
[5] 웹사이트 Lexico, system software https://www.lexico.c[...]
[6] 간행물 Mitsuhisa Sato講義ノート「言語処理系とは」 http://www.hpcs.cs.t[...]
[7] 웹인용 What is software? - Definition from WhatIs.com http://searchsoa.tec[...] Searchsoa.techtarget.com 2012-06-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com